<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>原型的原型</title>
</head>
<body>
<script>
    let arr = [1, 2, 3];

    /*
    *
    * 虽然我们知道原型是根据[[prototype]]去寻找的，但在讨论是可以理解为根据__proto__去寻找的
    *
    * */

    /*
    * 因为arr 是由 new Array创建的，所以 arr.__proto__ === Array.prototype
    *
    * */
    alert(arr.__proto__ === Array.prototype); // true

    /*
    * arr.__proto__ === Array.prototype
    * 我们知道Array.prototype要么是null要么是对象 既然可以继承只能是对象
    * 也就是说 Array.prototype ={}    =>  Array.prototype = new Object()
    * 所以Array.prototype的[[prototype]]是 Object.prototype
    * 也就是 arr.__proto__.__proto__ === Object.prototype
    *
    * */
    alert(arr.__proto__.__proto__ === Object.prototype); // true

    // 原型链的顶端为 null。
    alert(arr.__proto__.__proto__.__proto__); // null
</script>
</body>
</html>